博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie session 和登录验证
阅读量:4965 次
发布时间:2019-06-12

本文共 2679 字,大约阅读时间需要 8 分钟。

cookie、session 简单理解

cookie 和 session 的目的是追踪用户会话,标识用户,让服务器知道是谁在访问网站.

cookie 是保存在客户端的用户信息,在浏览器首次访问服务器时由服务器创建并发给客户端。浏览器收到cookie后会根据cookie时效,选择将cookie内容保存在内存或硬盘。当浏览器再次访问服务器是会在请求中携带cookie。

session 是保存在服务端的用户信息,服务器为每个会话创建一个session,session里面可以保存用户信息,session是通过以cookie的方式发送session ID 给客户端作为标识。来识别用户。而浏览器每次访问都会携带session ID

所以当cookie被禁用时也会导致session不可用。通常情况下,服务器是通过session保存用户登录信息,验证用户是否登录。那么当cookie不可用时,如何验证用户登录?

一般有下面几种方法:
1 URL重写
response对象有一个encodeURL(String URL)方法.可以自动的给url添加session ID 后缀,以提交参数的方式携带session ID
例如:

String newURL = response.encodeURL("/cart/ProductList");print(newURL) -> /cart/ProductList;jsessionid=110E31172D5630A31E296D40730B3521

这样,服务器发给浏览器的page里的link都如此处理。那服务器也能确认用户。

2 form 表单隐式提交

3 http协议携带

用户登录实现

用户登录逻辑:用户从登录页面提交登录信息,验证通过就跳转到welcome页面,不通过就回到登录页面,并提示信息错误。 使用sision保存用户登录信息,如果cookie被禁用,就使用url重写技术

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
login

登录

name:
password:

${warning}

LoginServlet.java

package servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import DAO.UserDAO;import bean.User;/** * Servlet implementation class Login */@WebServlet("/Login")public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取客户端传递的参数 String name = request.getParameter("name"); String password = request.getParameter("password"); //查数据库 User user = new UserDAO().getUser(name,password); if(user == null){ request.setAttribute("warning","user name or password is wrong"); request.getRequestDispatcher("/login.jsp").forward(request,response); }else{ //session要占用服务器内存,所以服务器不会默认创建(没有设置的话jsp会创建一个session对象(jsp隐式对象之一)) //没有创建session的话 encodeURL()不会起效 request.getSession().setAttribute("username",name); String URL = response.encodeURL("/cart/ProductList"); request.setAttribute("URL",URL); request.getRequestDispatcher(("/welcome.jsp")).forward(request,response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

welcome.jsp

WELCOME ${username}
product list

${URL}

转载于:https://www.cnblogs.com/zhang01010/p/7749326.html

你可能感兴趣的文章
mysql 根据日期时间查询数据
查看>>
mysql sin() 函数
查看>>
mysql upper() 函数
查看>>
socket tcp
查看>>
DataMining--Python基础入门
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
获取单选按钮选中的值
查看>>
oracle 分页
查看>>
助教学期总结
查看>>
绘制基本 图形之矩形与多边形
查看>>
3-day3-list-truple-map.py
查看>>
02: djangorestframework使用
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>
Python 文件处理
查看>>
邻接表详解
查看>>
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>